# DEFAULTS.PY - Default values
# HIT3046 AI for GAMES
# ------- Assignment 2
# Authors: Mike Blackney, 0906123
#          Alex Bruce, 5409438

DEBUG = False

# I/O:
SCREEN_SIZE = (1024,768)
BG_COLOR_TITLE = (58,48,79)
BG_COLOR_GAME = (32,32,64)
UI_BG = (0,0,0) # User interface background
UI_FG = (255,255,255) # User interface foreground
MOUSE_SENSITIVITY = 0.005
RETICLE_DIST = 60

ACTION_XOFF = +13
ACTION_YOFF = -30

# Action priority balance:
PATROL_SEC = -3
PATROL_STR = +1
HEAL_SEC = +2
HEAL_STR = -5
ENGAGE_SEC = -4
ENGAGE_STR = +2
DISARM_SEC = -5
DISARM_STR = +3
NO_NEED = 1000000 # If an action wouldn't help at all, return a low priority
DESIRE_MIN = 128 # Place a minimum on desires so squared negatives don't become positives.

# Game balance:
GAME_TIME = 60 * 5

COST_BLUR = 7
TIME_BLUR = 3

DEFAULT_SPEED = 50
MOVE_CLOSE_ENOUGH = 5

A_STAR_TIMELIMIT = 0.05 # Max time that a* can take per tick per guard

BOMB_COUNTDOWN = 5 # Time bombs count down for before explosion
BLAST_RADIUS   =80 # Radius of bomb destruction
BOMB_DAMAGE  = 50  # Damage taken from explosions
BULLET_SPEED = 160 # Speed a bullet travels at, in pixels per sec.
BULLET_CLOSE_ENOUGH = 10 # distance a bullet can be from a target to be close enough
BULLET_RANGE = 240 # Total distance a bullet will travel
BULLET_DAMAGE= 25  # The damage that agents take from bullet wounds

NUM_GUARDS = 4 # Total number of guards in the map
GUARD_FATAL = 4 * BULLET_DAMAGE # Wounds at which a guard dies
WOUNDS_MULT = 0.3 # Multiplied by Guard wounds to get the strength desire
VIS_TIMEOUT = 3 # Time it takes a guard without LOS to a spy to stop engaging
CLOSE_RANGE = 120 # Distance from a spy that a guard will close to.
GUARD_RELOAD = 0.5 # Time guards pause when firing
GUARD_SPAWN_RATE = 1.5 # Time between guard spawning
GUARD_LOOK_TIME = 3 # Time guards stand around at the end of a patrol
GUARD_VIEW_DIST = 280 # Distance that a guard can see for
BOMB_DISARM_TIME = 1

SPY_BOUNDING = 16 # Radius of spy's collision circle
SPY_SPEED = 80
SHOOT_TIMEOUT = 0.33 # Time it takes player to reload
BOMB_TIMEOUT  = 2  # Time players must wait between placing bombs
SPY_FULL_HEALTH = 3 # Number of bullets a spy can take before dying


BUILDING_DIST = 150 # Distance that buildings need to be from each other
MAP_SIZE = (40,30)  # Game world is 40 tiles wide by 30 tiles high
MAP_SCALE = 25      # Each tile is 25x25 pixels on the screen

COST_NEUTRAL = 128  # Tiles begin at 128 cost
FRAG_BONUS   = -32  # The cost reduction for tiles where bots scored a hit
DEATH_PENALTY= 32   # Cost increase for tiles in which bots were shot
COST_MIN     = 0    # Cost to traverse to a tile can go down to zero
COST_MAX     = 255  # and up to 255

# Data for buildings - filenames and play balance:
BUILDING_DATA = \
              { "FACILITY":   { "name":"Facility", \
                                "sprite":"facility_icon.gif", \
                               "heal_reward":0, "security_reward":0 }, \
                "BARRACKS":   { "name":"Barracks", \
                                "sprite":"barracks_icon.gif", \
                               "heal_reward":-8, "security_reward":3 }, \
                "RADIOTOWER": { "name":"Radio Tower", \
                                "sprite":"radiotower_icon.gif", \
                               "heal_reward":0, "security_reward":0 }, \
                "ENGINEERING":{ "name":"Engineering", \
                                "sprite":"engineering_icon.gif", \
                               "heal_reward":0, "security_reward":0 }, \
                "MESSHALL":   { "name":"Mess Hall", \
                                "sprite":"messhall_icon.gif", \
                               "heal_reward":-2, "security_reward":2 } \
                }
